<template>

</template>

<script>
import {defineComponent} from 'vue';

export default defineComponent({
  name: 'ProvideInjectDeepChildren',
  // 字符串数组声明inject，无法进行别名和默认值设置
  // inject: ['message', 'globalKey'],

  // 对象声明inject（常用）
  // 注入过程发生于组件实例被创建以前，实例中data、methods和computed等可使用
  inject: {
    messageAlias: { // 别名
      from: 'message', // 注入来源
      // default: 'defaultValue', // 默认值
      default: () => { // 默认值
        return 'defaultValue';
      }
    },
    objectAlias: {
      from: 'object',
    },
    globalKey: {
      from: 'globalKey'
    }
  },
  created() {
    console.log(this.messageAlias); // 祖先组件
    console.log(this.objectAlias); // {message: '祖先组件'}
    console.log(this.globalKey); // globalValue
  }
});
</script>

<style scoped>

</style>